package cn.xenosp.server.module.activiti.service;

import cn.xenosp.server.module.activiti.entity.ProcessInstanceVO;
import cn.xenosp.server.module.activiti.entity.ProcessDefinitionVO;
import cn.xenosp.server.module.activiti.entity.SuspendDefinition;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.multipart.MultipartFile;

/**
 * 项目名： service-web
 * 包路径： cn.xenosp.server.module.activiti.service
 * 作者：   TongHui
 * 创建时间: 2025-05-27 13:55
 * 描述: TODO
 * 版本: 1.0
 */
public interface ProcessDefinitionService extends IService<ProcessDefinitionVO> {

    /**
     * 流程定义查询
     * @param processDefinitionVO
     * @return
     */
    IPage getByPaged(ProcessDefinitionVO processDefinitionVO);

    /**
     * 流程部署
     * @param processDefinitionVO
     */
    void deploy(ProcessDefinitionVO processDefinitionVO);
    /**
     * 流程部署
     * @param file
     * @param processDefinitionVO
     */
    void deployFile(MultipartFile file,ProcessDefinitionVO processDefinitionVO);
    /**
     * 查看流程图
     * @param deploymentId
     * @param resourceName
     * @return
     */
    String show(String deploymentId, String resourceName);
    /**
     * 删除流程定义
     * @param id
     * @param deploymentId
     * @return
     */
    String deleteById(String id ,String deploymentId);

    /**
     * 校验流程定义
     * @param processDefinitionVO
     * @return
     */
    boolean verify(ProcessDefinitionVO processDefinitionVO);

    boolean exchangeToModel(String id, Integer designType);
    /**
     * 挂起流程定义
     * @param dto
     * @return
     */
    boolean suspend(SuspendDefinition dto);
    /**
     * 激活流程定义
     * @param dto
     * @return
     */
    boolean activate(SuspendDefinition dto);
    /**
     * 流程实例查询
     * @return
     */
    IPage processInstance(ProcessInstanceVO flowInfo);

    /**
     *  启动流程
     * @param id
     */
    void startProcess(String id);

}
